Introduction

Deux objectifs du présent notebook :

  1. Développer un algorithme de segmentation
    • pour aider les l’équipes e-commerce à mieux communiquer avec les clients
  2. Proposer un contrat de maintenance
    • basé sur une analyse de la stabilité des segments au cours du temps

Dans un premier temps, nous allons analyser notre jeu de données du point de vue marketing. L'idée est de repérer les features qui ont du sens, afin de cibler les clients qui sembleraient intéressants en termes de vente.

Pour ce faire, nous allons nous appuyer sur la méthode RFM. Ensuite nous allons mettre en place des algorithmes de clustering permettant de déterminer une typologie comportementale de chaque client.

Ci-dessous la table des matières du présent notebook :

Analyse RFM

La méthode RFM permet d’établir des groupes de clients homogènes suivant trois critères :

Un client qui achète une fois et disparaît dans la nature n’est pas le même qu’un client régulier qui achète à une fréquence importante. Un client qui dépense de grosses sommes n’est pas non plus le même qu’un client qui dépense peu.

Nous allons essayer d'identifier les caractéristiques client suivant leur comportement d'achat.

Préparation du jeu de données

Se repérer dans le parcours client

A présent, nous allons créer un nouveau dataframe qui regroupera les caractéristiques qui nous permettront de calculer les R,F & M. Le je de données comprendra les features suivantes :

Après vérification, la variable payment_value correspond bien au prix total payé.

Se repérer sur l'axe du temps

Essayons de définir la période concernée par notre analyse.

La plage est assez large : d'Octobre 2016 jusqu'à fin Août 2018. Nous allons la réduire à 12 mois :

Récence

Afin de calculer la Récence, il faut savoir à quand date le dernier achat, autrement dit connaître le nombre de jours écoulés depuis cet achat. Les variables qui nous seront utiles sont les suivantes : customer_unique_id en fonction de order_purchase_timestamp.

Fréquence

La Fréquence correspond au nombre de commandes effectuées par chaque client :

Montant

Maintenant que nous avons la donnée Recency & Frequency, il ne reste plus qu'à rajouter la valeur monetaire. Il suffit d'additionner le total des dépenses :

Fusionnons les trois mini datasets :

Segmentation

A présent, nous allons calculer les scores RFM.

Distribution des features R, F et M

Dans un premier temps, il faut parvenir à diviser la population d'une distribution de façon homogène. Affichons la distribution des trois variables :

Les distributions ne sont pas symétriques :

Analysons les distributions une par une.

Récence

RAS du côté de la Récence. Les clients sont les plus nombreux à avoir visité le site il y a entre environ 50 et 220 jours.

Fréquence

Du côte de la Fréquence nous observons de très nombreux outliers. Pourtant, il ne s'agit pas de valeurs aberrantes. Il s'agit de clients qui commandent avec une fréquence très diversifiée : entre 0 et plus de 70 fois.

Pour la suite de l'analyse, nous allons garder les clients qui ont commandé entre une et 12 fois, c'est à dire qui représentent plus de 0.001% des clients.

Montant

La distribution des prix est également très étalée. Vérifions les valeurs extrêmes :

La somme payée minimale s'élève à 10 réis. La somme maximale est aberrante : 109312.640000 réis. Faisons appel à la méthode des inter-quartiles pour vérifier les limites :

Nous allons éliminer les valeurs supérieures à 1 500 réis, car elles se situent en dehors de la limite maximale de la distribution des données (on considère comme valeur extrême tout ce qui est supérieur à moyenne + 3 écart-type ou inférieur à moyenne – 3 écart-type). Affichons le nombre de clients concernés :

La skewness des distributions de la Fréquence et Montant est un peu plus équlibrée. Plus loin dans l'analyse, nous allons procéder à un scaling de données.

Attribution de scores

Pour attritbuer un score à un client, il faut diviser la population de façon homogène. Commençons par visualiser les quantiles de chaque variable :

Les quantiles de la feature Fréquence ne sont pas cohérents. Jetons un oeil sur les indicateurs statistiques :

Nous constatons que la valeur 1 représente plus de 86% des clients et la valeur 2 environ 11%, donc à elles deux près de 96% du total. Essayons de trouver un bon compromis pour attribuer les notes de façon fiable (un client ayant commandé 1 fois ne peut pas avoir le même score qu'un client qui a commandé plus de 10 fois).

Nous allons assigner les notes pour la Fréquence de façon arbitraire, suivant la fréquence de commandes :

En règle générale, on attribue :

Nous pouvons enfin ajouter les résultats à notre tableau RFM :

Une fois les valeurs des quartiles additionnées, chaque client se verra attribuer son propre score RFM.

Les notes sont correctement réparties. Nous allons pouvoir passer à l'interprétation des résultats de la segmentation RFM.

Analyse des résultats de la segmentation

Nous venons de créer un grand nombre de combinaisons de scores possibles (5 scores puissance 3 - 125 segments au total). Pour la suite de notre analyse, nous allons en sélectionner une partie. Ci-dessous les scores les plus représentatifs :

Parmi les 15 premières positions (entre 2662 et 3120 clients) se placent :

Essayons de visualiser les résultats :

Analyse comportementale

Conformément aux règles du marketing moderne, nous allons tenter de "trier" les clients en fonction de leur comportement d'achat. L'objectif est d'identifier des tendances dans la manière dont les clients agissent dans leur parcours d’achat.

Nous allons assigner aux scores obtenus un label qui définit le type de comportement :

Les labels "positifs" :

Les labels "négatifs" :

Conclusions

Quels comportements sont les plus fréquents ?

Les clients les plus nombreux semblent ceux "en hibernation" :

Conclusion

La segmentation RFM a permis de classer les attitudes clients dans toutes les catégories proposées. Dans un souci de rester cohérent et ne pas brouiller les résultats, le nombre de clusters final ne devrait pas dépasser ce chiffre.

Clustering

Méthodologie

La suite de l'analyse se fera en plusieurs étapes :

  1. Préprocessing
  2. Clustering
    • KMeans
    • DBScan
    • CAH

Afin de trouver le nombre optimal de clusters k, nous allons nous appuyer sur les métriques suivantes (et leurs visualiseurs) :

Préprocessing

Notre jeu de données rfm contient des données de type object. Nous allons devoir effectuer un prétraitement afin de transfomer le dataset en un format propice au machine learning :

-------------------------------------- K-Means --------------------------------------

L'objectif d'apprentissage non supervisé est de laisser la machine classer les données selon leurs ressemblances.

K-Means nous permettra de trouver des échantillons dont les caractéristiques sont très proches de celles des autres échantillons. Cela se fait en deux étapes :

  1. Affectation de chaque point du dataset au centre le plus proche.
  2. Déplacement du centre à la moyenne du cluster.

K-Means cherche la position des centres qui minimise la distance entre les points d'un cluster et le centre de ce dernier (la fonction coût - Inertia).

Eléments-clés

Le seul paramètre nécessaire qui doit être renseigné au préalable est le nombre de clusters (n_clusters). Il est possible également de définir les paramètres suivants :

1. K-Means : variables RFM

1.1 Critère Inertia - Elbow method

Afin de trouver un nombre de clusters optimal, nous allons faire appel à la technique du coude. La courbe ainsi obtenue permet de tracer l'évolution du coût de notre modèle en fonction du nombre de clusters.

La courbe décroît avec le nombre de clusters. La zone du coude est le point représentant le nombre optimal de clusters, elle indique qu'il faut en privilégier 4.

Mise en place de l'algorithme avec 4 clusters

Visualisation avec PCA

Nous allons à présent afficher les clusters obtenus sur deux dimensions :

Presque 80% de la variance totale expliquée, c'est un bon résultat.

L'affichage des clusters en deux dimensions permet d'identifier 4 clusters distincts avec leurs centroïdes. Le cluster cyan semble être très dispersé.

Vérifions les résultats pour le score silhouette.

1.2 Score Silhouette

L'analyse de silhouette peut être utilisée pour évaluer la densité et la séparation entre les clusters. Le score est la moyenne du coefficient de silhouette pour tous les points - il s'agit de la différence entre la distance intra-cluster moyenne et la distance moyenne du cluster le plus proche pour chaque échantillon, normalisée par la valeur maximale.

Cela produit un score compris entre -1 et +1, où :

Le coefficient de silhouette change avec le nombre de clusters. Il faut privilégier les clusters pour lesquels le coefficient est le plus élevé : 4 ou 5.

Mise en place de l'algorithme avec 4 et 5 clusters

La méthode du coude suggère un nombre optimal de 4 clusters. Le score silhouette indique également 4 ou 5 sinon 9 clusters. Neuf clusters est un chiffre trop élevé dans le cadre de la segmentation. Vérifions le résultat :

Visualisation des résultats avec SilhouetteVisualizer

Pour mieux se rendre compte de la densité et la séparation entre clusters, nous allons utiliser l'outil Silhouette Visualizer. Nous allons afficher les résultats pour un nombre de clusters optimal indiqué par les méthodes utlisées ci-dessus :

Conclusions pour k=4:

La ligne verticale pointillée rouge indique le score de silhouette moyen pour toutes les observations. Les graphiques contiennent des silhouettes très différentes :

Conclusions pour k=5 :

A présent nous allons afficher les distances entre les clusters :

Sur cette projection en 2D, on remarque que les différents clusters sont très bien séparés sur les 2 premières composantes principales. Le clustering semble donc performant.

Une moins bonne séparation de clusters sur le graphique. Nous observons un chevauchement entre les clusters 1 et 3.

Analyse du résultat

Les deux valeurs de n_clusters semblent être la valeur optimale :

Essayons d'identifier les profils client :

Conclusions

Plusieurs conclusions :

Nous constatons un meilleur découpage avec n_clusters=4. Les clusters sont plus diversifiés en termes de taille.

  1. Analyse de la moyenne :
    • les chiffres permettent d'identifier des clusters divers, dont les moyennes sont différentes
    • pas de chevauchements entre clusters
  1. Nombre de clients par cluster :
    • plus de 1200 clients classés au sein d'un cluster
    • les groupes d'individus sont nombreux et distincts
  1. Analyse graphique :

L’analyse du graphique permet de visualiser la volumétrie de chaque cluster :

A présent nous allons afficher le graphe des coordonnées parallèles qui nous apportera des informations supplémentaires sur les clusters :

Les données ne sont pas très lisibles, étant donnée la densité des lignes (chaque ligne correspond à un enregistrement). Les clusters semblent assez similaires. Essayons de calculer la moyenne :

Conclusions

Voilà les caractéristiques des clusters respectifs :

2. K-Means : variables RFM et Avis

Création du jeu de données

Normalisation

1.1 Critère Inertia - Elbow method

La méthode du coude indique qu'il faut privilégier entre 2 et 6 clusters. Nous allons réaliser une segmentation avec 4.

Mise en place de l'algorithme avec 4 clusters

Visualisation avec PCA

Nous allons à présent représenter les clusters obtenus sur deux dimensions :

Presque 63% de variance expliqué.

Quatre clusters se dessinent sur le graphique, avec les centroïdes bien attribués. Il est difficile de faire une distinction nette, pour cela nous allons visualiser les clusters avec le silhouette vizualizer (cf plus bas).

1.2 Score Silhouette

Le coefficient de silhouette décroît avec le nombre de clusters. Il faut privilégier les clusters pour lesquels le coefficient est le plus élevé : le 3 ou le 5.

Mise en place de l'algorithme avec 5 et 6 clusters

La méthode du coude suggère un nombre optimal de 4 clusters. Le score silhouette indique 5 ou 6/7 clusters. Nous allons visualiser tous les scénarios :

Conclusions pour k=4 :

A présent nous allons afficher les distances entre 4 clusters :

Sur cette projection en 2D, on remarque que les différents clusters sont bien séparés sur les 2 premières composantes principales. Le clustering semble donc performant.

Vérifions la séparation des clusters pour le n_clusters à 5 :

Conclusions pour k=5 :

Pas de chevauchements pour 5 clusters. Les clusters sont très bien séparés.

Conclusions pour k=6 :

Le nombre d'erreurs étant assez élevé, faisons une dernière vérification avec k=3 :

Conclusions pour k= 3 :

Analyse du résultat

La valeur de 4 ou 5 pour n_clusters semble être la valeur optimale :

Regardons les valeurs moyennes par cluster :

Conclusions

Plusieurs conclusions :

Nous constatons un meilleur découpage avec 5 clusters.

  1. Analyse de la moyenne :
    • les chiffres permettent d'identifier des clusters divers, dont les moyennes sont différentes (sauf pour la fréquence)
  1. Nombre de clients par cluster :
    • plus de 1300 clients classés au sein d'un cluster
    • les groupes d'individus sont nombreux et distincts
  1. Analyse graphique :

L’analyse du graphique permet de visualiser la volumétrie de chaque cluster :

A présent nous allons afficher le graphe des coordonnées parallèles qui nous apportera des informations supplémentaires sur les clusters identifiés :

Les données ne sont pas très lisibles, étant donnée la densité des lignes. Les clusters semblent assez similaires. Essayons de calculer la moyenne :

Le graphe de coordonnées parallèles permet de mieux comprendre les caractéristiques des clusters :

Les clients les moins contents constituent une minorité. Les clients les plus contents sont les plus nombreux (plus de 64 000 personnes ont émis un avis favorable noté 5).

Il serait probablement intéressant de fusionner les types de comportements les plus proches pour avoir une meilleure visibilité de profils client.

3. K-Means : variables RFM et Retard

Création du dataset

Normalisation

1.1 Critère Inertia - Elbow method

La méthode du coude indique qu'il faut privilégier entre 3 et 6 clusters. Nous allons en appliquer 4.

Mise en place de l'algorithme avec 4 clusters

Visualisation avec PCA

Nous allons à présent représenter les clusters obtenus sur deux dimensions :

Seulement 48% de variance expliquée.

Nous remarquons quatre clusters bien distincts, chacun avec son centroïde. Une meilleure visualisation plus bas avec le silhouette vizualiser.

1.2 Score Silhouette

Le coefficient de silhouette augmente avec le nombre de clusters. Il faut privilégier les clusters pour lesquels le coefficient est le plus élevé : le 4 ou 5.

Mise en place de l'algorithme avec 4 et 5 clusters

Conclusions pour k = 4 :

A présent nous allons afficher les distances entre 4 clusters :

Sur cette projection en 2D, on remarque que les différents clusters sont bien séparés, pas de chevauchements.

Nous allons afficher par la suite les résultats pour k=5 :

Conclusions pour k=5 :

Nous allons tenter un n_cluster = 3 pour comparer avec les résultats actuels :

Analyse du résultat

La valeur de 4 pour n_clusters semble être la valeur optimale :

Néanmoins, le clustering effectué pour les variables Fréquence, Récence, Montant et Retard ne donne pas de résultats satisfaisants. La feature Retard ne semble pas être orientée à définir des clients intéressants du point de vue marketing.

-------------------------------------- DBScan --------------------------------------

Les clusters sont des régions denses dans l’espace de données, séparées par des régions de densité de points inférieure. L’ algorithme DBSCAN est basé sur cette notion intuitive de «clusters» et de «bruit». L’idée clé est que pour chaque point d’un cluster, le voisinage d’un rayon donné doit contenir au moins un nombre minimum de points.

Contrairement à l’algorithme des K-Means ou la classification ascendante hiérarchique, il n’y a pas besoin de définir en amont le nombre de clusters ce qui rend l’algorithme moins rigide.

Eléments-cles

L’algorithme DBSCAN nécessite deux paramètres :

Dans cet algorithme, nous avons 3 types de points de données.

  1. Point central / Core point : Un point est un point central s’il a plus de points MinPts dans eps.
  2. Border Point : Un point qui a moins de MinPts dans eps mais qui se trouve au voisinage d’un point central.
  3. Bruit / Noise ou valeur aberrante : un point qui n’est pas un point central ou un point frontière.

Les variables RFM

Plutôt que d'expérimenter différentes valeurs d'epsilon, nous pouvons utiliser la méthode du coude pour obtenir une valeur d'epsilon convenable.

Sur un graphique de k-distances, la valeur optimale pour epsilon est le point situé sur la courbe. Implémentons cette technique ci-dessous et générons un graphique.

Nous allons choisir un ε de telle sorte que 90% des observations aient une distance au proche voisin inférieure à ε. Dans notre exemple 0.3 voire 0.5 semblent convenir.

Nous allons donc générer les clusters avec ces valeurs et calculer le nombre de clusters ainsi que le nombre d'éventuels bruits.

Min_samples à 100

Conclusion

Les arguments eps et min_samples ont permis de fixer la distance ε et le nombre minimal de voisins (100) pour être considéré comme une observation cœur. L’algorithme a donc détecté :

Les résultats ne sont pas satisfaisants : non seulement le nombre de clusters ne semble pas suffisant, mais en plus le nombre de bruits est très élevé (ce qui équivaut à des données non analysées, c'est-à-dire des clients sans cluster).

Min_samples à 10

Conclusion

L'argumentmin_samples défini à 10 a permis de détecter :

Les résultats ne sont pas satisfaisants. Les clusters proposés sont trop nombreux, par conséquent ils ne contiennent pas un nombre suffisant de profils clients.

Analyse du bruit

Essayons d'afficher le nombre de clients sans cluster (cluster « -1 »).

Chacune des observations est étiquetée avec le nom du cluster correspondant (-1,0,1,2). Les anomalies sont étiquetées en -1 et forment donc une classe à part en plus des 3 clusters détectés.

Nous constatons que la classe -1 est très, voire trop, nombreuse.

-------------------------------- CAH : Classification Ascendante Hiérarchique -------------------------------

C’est une méthode hiérarchique qui se construit étape par étape en partant du niveau le plus fin où chaque individu est seul dans son groupe jusqu’au niveau le plus agrégé où tous les individus sont dans le même groupe. Pour présenter la manière dont tout cela s’organise on construit un dendrogramme.

Eléments-clés

L'algorithme CAH nécessite trois paramètres :

Nous allons effectuer le clustering sur un échantillon, étant donné que le CAH est un algorithme assez lourd et chronophage :

Normalisation

Dendrogramme

L’algorithme CAH demande en amont de définir le nombre de partitions.

Le dendrogramme permet de visualiser les regroupements successifs jusqu’à obtenir un unique cluster. Il est souvent pertinent de choisir le partitionnement correspondant au plus grand saut entre deux clusters consécutifs.

Pour construire le dendrogramme, il faut choisir une méthode d’agrégation. Parmi de nombreuses solutions qui existent (saut minimum, distance maximum, moyenne, Ward…), nous privilégierons la méthode de Ward.

De manière simplifiée, cette méthode cherche à minimiser l’inertie intra-classe et à maximiser l’inertie inter-classe afin d’obtenir des classes les plus homogènes possibles.

L'axe des abscisses représente les clients et l'axe des ordonnées est constitué de la distance euclidienne entre les clusters.

Afin de déterminer le nombre optimal de clusters, nous recherchons la plus grande distance verticale sans traverser aucune ligne horizontale. Observons la répartition des individus au niveau du seuil 30 de la distance euclidienne. Nous allons demander à sklearn de générer 6 clusters :

Les clusters ne sont pas tout à fait homogènes : 127 ou 136 contre 1494 ou 1124.

Vérifions comment seront formés les clusters pour n_clusters = 4 et 3 :

Idem, on observe un décalage en termes de la volumétrie des clusters. Essayons d'interpréter les résultats à l'aide d'un boxplot pour 4 clusters :

Conclusions

Voilà l'interprétation des caractéristiques des clusters respectifs :

Conclusion

Parmi toutes les méthodes de clustering appliquées ci-dessus, c'est le K-Means qui semble être le plus efficace. Le CAH donne des résultats similaires, en revanche les temps de performances laissent à désirer.

Les résultats de K-Means sont parfaitement interprétables et utilisables par une équipe marketing. Néanmoins, la segmentation RFM semble fournir une analyse des profils client tout aussi pertinente. Une comparaison des deux méthodes pourrait donner de bons résultats (note : il faudrait peut-être rétrecir la liste des comportements d'achat en fusionnant certains profils - ceux similaires ou ceux les moins nombreux).

Sources